package com.yupi.yurpc.proxy;

import java.lang.reflect.Proxy;

/**
 * 工厂设计模式
 *
 * @program: yu-rpc
 * @description: Java Lotus
 * @author: spring
 * @create: 2024-10-23
 * 服务代理工厂（用于创建代理对象）
 */

/**
 * 根据服务类获取代理对象
 * 通过 Proxy.newProxyInstance 方法为指定类型创建代理对象。
 * @author spring
 */
//工厂设计模式，减少了代码的冗余程度
public class ServiceProxyFactory {

    public static <T> T getProxy(Class<T> serviceClass) {

        //创建代理对象
        return (T) Proxy.newProxyInstance(
                serviceClass.getClassLoader(),
                new Class[]{serviceClass},
                new ServiceProxy());
    }
}
